home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 2002 November / SGI IRIX Installation Tools & Overlays 2002 November - Disc 4.iso / dist / motif21_dev.idb / usr / Motif-2.1 / include / Xm / CascadeBP.h.z / CascadeBP.h
C/C++ Source or Header  |  2002-10-15  |  7KB  |  208 lines

  1. /* 
  2.  *  @OSF_COPYRIGHT@
  3.  *  COPYRIGHT NOTICE
  4.  *  Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
  5.  *  ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
  6.  *  the full copyright text.
  7. */ 
  8. /* 
  9.  * HISTORY
  10. */ 
  11. /* $XConsortium: CascadeBP.h /main/12 1996/03/25 14:52:42 pascale $ */
  12. /* (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  13. /* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  14. #ifndef  _XmCascadeBP_h
  15. #define  _XmCascadeBP_h
  16.  
  17. #include <Xm/CascadeB.h>
  18. #include <Xm/LabelP.h>
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. /* The CascadeButton instance record */
  25.  
  26. #ifdef _SGIMOTIF
  27.  
  28. /* comment from 1.2
  29.     K.Lee - new instance variables for menu bar repeat stuff */
  30. typedef struct __SG_XmCascadeButtonExtPart {
  31.     int    menuBarRepeatTimeout;
  32.     XtIntervalId    menuBarRepeatTimer;
  33.     XEvent    savedMenuBarEvent;
  34. /* new 2.1, used by toolchest */    
  35.     Boolean    allowPixmapInMenuBar;
  36. } _SG_XmCascadeButtonExtPart;
  37.  
  38. typedef struct __SG_XmCascadeButtonExt {
  39.     _SgInstanceExtensionRec    common;
  40.     _SG_XmCascadeButtonExtPart    instance;
  41. } _SG_XmCascadeButtonExtRec, *_SG_XmCascadeButtonExt;
  42.  
  43. #define _SG_CascadeButtonPtr(w) \
  44. ((_SG_XmCascadeButtonExt)(((XmCascadeButtonWidget)(w))->cascade_button._SG_vendorExtension))
  45.         
  46. #define _SG_CascadeButtonClassPtr(wc) \
  47. ((_SG_XmCascadeButtonClassExt)(((XmCascadeButtonClassRec*)(wc))->cascadeButton_class._SG_vendorExtension))
  48.  
  49. #endif /* _SGIMOTIF */        
  50.  
  51. typedef    struct 
  52. {                /* resources */
  53.     XtCallbackList    activate_callback;    /* widget fired callback */
  54.     XtCallbackList    cascade_callback;    /* called when the menu is  */
  55.                         /* about to be pulled down */
  56.  
  57.     Widget        submenu;        /* the menu to pull down */
  58.     Pixmap        cascade_pixmap;        /* pixmap for the cascade */
  59.     int         map_delay;        /* time delay for posting */
  60.  
  61.                 /* internal fields */
  62.  
  63.     GC                  arm_GC;                 /* armed GC */
  64.     GC                  background_GC;          /* normal GC */
  65.     Boolean        armed;            /* armed flag */
  66.     XRectangle        cascade_rect;        /* location of cascade*/
  67.     XtIntervalId    timer;            /* timeout id */
  68.     Pixmap        armed_pixmap;        /* arm arrow cascade */
  69.  
  70. #ifdef _SGIMOTIF
  71.     _SG_XmCascadeButtonExt    _SG_vendorExtension;
  72. #endif /* _SGIMOTIF */
  73.  
  74. } XmCascadeButtonPart;
  75.  
  76.  
  77. /* Full instance record declaration */
  78.  
  79. typedef struct _XmCascadeButtonRec
  80. {
  81.     CorePart        core;
  82.     XmPrimitivePart    primitive;
  83.     XmLabelPart        label;
  84.     XmCascadeButtonPart    cascade_button;
  85. } XmCascadeButtonRec;
  86.  
  87. typedef struct _XmCascadeButtonWidgetRec/* OBSOLETE (for compatibility only).*/
  88. {
  89.     CorePart        core;
  90.     XmPrimitivePart    primitive;
  91.     XmLabelPart        label;
  92.     XmCascadeButtonPart    cascade_button;
  93. } XmCascadeButtonWidgetRec;
  94.  
  95.  
  96. /* CascadeButton class structure */
  97.  
  98. #ifdef _SGIMOTIF
  99.  
  100. typedef struct __SG_XmCascadeButtonClassExtPart {
  101.         XtPointer extension;
  102. } _SG_XmCascadeButtonClassExtPart;
  103.  
  104. typedef struct __SG_XmCascadeButtonClassExt {
  105.         _SgClassExtensionRec common;
  106.         _SG_XmCascadeButtonClassExtPart cascadeButton;
  107. } _SG_XmCascadeButtonClassExtRec, *_SG_XmCascadeButtonClassExt;
  108.  
  109. #endif /* _SGIMOTIF */
  110.  
  111. typedef struct 
  112. {
  113.     XtPointer    extension;    /* Pointer to extension record */
  114.     
  115. #ifdef _SGIMOTIF
  116.     _SgClassExtension _SG_vendorExtension;
  117. #endif /* _SGIMOTIF */
  118.  
  119. } XmCascadeButtonClassPart;
  120.  
  121.  
  122. /* Full class record declaration for CascadeButton class */
  123.  
  124. typedef struct _XmCascadeButtonClassRec 
  125. {
  126.     CoreClassPart        core_class;
  127.     XmPrimitiveClassPart    primitive_class;
  128.     XmLabelClassPart        label_class;
  129.     XmCascadeButtonClassPart cascade_button_class;
  130. } XmCascadeButtonClassRec;
  131.  
  132.  
  133. externalref XmCascadeButtonClassRec   xmCascadeButtonClassRec;
  134.  
  135.  
  136. /* Access macro definitions */
  137.  
  138. #define CB_Submenu(cb)        (((XmCascadeButtonWidget)                    \
  139.                                   cb)->cascade_button.submenu)
  140.  
  141. #define CB_ActivateCall(cb)    (((XmCascadeButtonWidget)                    \
  142.                                   cb)->cascade_button.activate_callback)
  143. #define CB_CascadeCall(cb)    (((XmCascadeButtonWidget)                    \
  144.                                   cb)->cascade_button.cascade_callback)
  145.  
  146.  
  147. #define CB_CascadePixmap(cb)    (((XmCascadeButtonWidget)                    \
  148.                                   cb)->cascade_button.cascade_pixmap)
  149. #define CB_ArmedPixmap(cb)    (((XmCascadeButtonWidget)                    \
  150.                                   cb)->cascade_button.armed_pixmap)
  151.  
  152. #define CB_ArmGC(cb)            (((XmCascadeButtonWidget)                    \
  153.                                   cb)->cascade_button.arm_GC)
  154. #define CB_BackgroundGC(cb)     (((XmCascadeButtonWidget)                    \
  155.                                   cb)->cascade_button.background_GC)
  156.  
  157. #define CB_Cascade_x(cb)    (((XmCascadeButtonWidget)                    \
  158.                                   cb)->cascade_button.cascade_rect.x)
  159. #define CB_Cascade_y(cb)    (((XmCascadeButtonWidget)                    \
  160.                                   cb)->cascade_button.cascade_rect.y)
  161. #define CB_Cascade_width(cb)    (((XmCascadeButtonWidget)                    \
  162.                                   cb)->cascade_button.cascade_rect.width)
  163. #define CB_Cascade_height(cb)    (((XmCascadeButtonWidget)                    \
  164.                                   cb)->cascade_button.cascade_rect.height)
  165.  
  166. #define CB_HasCascade(cb)       (((Lab_MenuType(cb) == XmMENU_PULLDOWN)  ||  \
  167.                  (Lab_MenuType(cb) == XmMENU_BAR) || \
  168.                   (Lab_MenuType(cb) == XmMENU_POPUP)) &&     \
  169.                      (CB_Submenu(cb)))
  170.  
  171.  
  172. #define XmCB_ARMED_BIT          (1 << 0)    
  173. #define XmCB_TRAVERSE_BIT     (1 << 1)
  174. #define XmCB_WAS_POSTED_BIT   (1 << 2)
  175.  
  176.  
  177. #define CB_IsArmed(cb)     (((XmCascadeButtonWidget)(cb))->cascade_button.armed \
  178.               & XmCB_ARMED_BIT)
  179.  
  180. #define CB_Traversing(cb) (((XmCascadeButtonWidget)                           \
  181.                 (cb))->cascade_button.armed & XmCB_TRAVERSE_BIT)
  182.  
  183. #define CB_WasPosted(cb)  (((XmCascadeButtonWidget)                           \
  184.                 (cb))->cascade_button.armed & XmCB_WAS_POSTED_BIT)
  185.  
  186. #define CB_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  187.  
  188. #define CB_SetArmed(cb,v)  CB_SetBit (((XmCascadeButtonWidget)             \
  189.                        (cb))->cascade_button.armed,          \
  190.                       XmCB_ARMED_BIT, v)
  191.  
  192. #define CB_SetTraverse(cb,v)  CB_SetBit (((XmCascadeButtonWidget)         \
  193.                        (cb))->cascade_button.armed,          \
  194.                       XmCB_TRAVERSE_BIT, v)
  195.  
  196. #define CB_SetWasPosted(cb,v)  CB_SetBit (((XmCascadeButtonWidget)         \
  197.                        (cb))->cascade_button.armed,      \
  198.                       XmCB_WAS_POSTED_BIT, v)
  199.  
  200.  
  201.  
  202. #ifdef __cplusplus
  203. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  204. #endif
  205.  
  206. #endif  /* _XmCascadeBP_h */
  207. /* DON'T ADD STUFF AFTER THIS #endif */
  208.